Assertions হলো টেস্ট স্ক্রিপ্টের একটি গুরুত্বপূর্ণ অংশ, যা পরীক্ষার সময় নির্দিষ্ট অবস্থা যাচাই করতে সাহায্য করে। TestNG Assertions ব্যবহার করে আপনি সহজেই ভেরিফাই করতে পারেন যে আপনার টেস্ট কেস প্রত্যাশিত আউটপুট দিচ্ছে কিনা। যদি Assertion ব্যর্থ হয়, তবে TestNG সেই টেস্ট কেসটিকে ব্যর্থ হিসেবে চিহ্নিত করে এবং পরবর্তী ধাপগুলো এক্সিকিউট হওয়া বন্ধ করে।
Assertions-এর ধরন
TestNG Assertions প্রধানত দুটি ভাগে বিভক্ত:
১. হার্ড অ্যাসারশন (Hard Assertion):
যদি Assertion ব্যর্থ হয়, তবে টেস্ট এক্সিকিউশন অবিলম্বে বন্ধ হয়ে যায়।
২. সফট অ্যাসারশন (Soft Assertion):
যদি Assertion ব্যর্থ হয়, টেস্ট এক্সিকিউশন বন্ধ না হয়ে পরবর্তী ধাপে চলে যায়।
TestNG হার্ড Assertions
Hard Assertions ব্যবহার করে টেস্ট কেসে নির্দিষ্ট অবস্থার যাচাই নিশ্চিত করা হয়। TestNG কিছু সাধারণ হার্ড Assertions প্রদান করে:
সাধারণ Hard Assertions:
assertEquals(actual, expected)assertNotEquals(actual, expected)assertTrue(condition)assertFalse(condition)assertNull(object)assertNotNull(object)
উদাহরণ:
import org.testng.Assert;
import org.testng.annotations.Test;
public class HardAssertionsTest {
@Test
public void testEquality() {
int actual = 5;
int expected = 5;
Assert.assertEquals(actual, expected, "Actual এবং Expected সমান নয়!");
}
@Test
public void testCondition() {
boolean condition = true;
Assert.assertTrue(condition, "শর্তটি সত্য নয়!");
}
}
ব্যাখ্যা:
assertEquals: ভ্যালু দুইটি সমান কিনা যাচাই করে।assertTrue: শর্তটি সত্য কিনা তা যাচাই করে।
যদি Assertion ব্যর্থ হয়, TestNG টেস্ট কেস বন্ধ করে দেয় এবং ব্যর্থতার কারণ দেখায়।
TestNG সফট Assertions
Soft Assertion ব্যবহার করে একাধিক Assertion ব্যর্থ হলেও টেস্ট চলতে থাকে এবং শেষে ব্যর্থতার রিপোর্ট দেয়। Soft Assertion-এর জন্য SoftAssert ক্লাস ব্যবহার করা হয়।
উদাহরণ:
import org.testng.asserts.SoftAssert;
import org.testng.annotations.Test;
public class SoftAssertionsTest {
@Test
public void testMultipleAssertions() {
SoftAssert softAssert = new SoftAssert();
softAssert.assertEquals(5, 10, "Value সমান নয়!");
softAssert.assertTrue(false, "Condition সত্য নয়!");
softAssert.assertNotNull(null, "Object Null!");
// Soft Assertion এর রিপোর্ট তৈরি করতে শেষ পর্যন্ত এটি কল করতে হয়
softAssert.assertAll();
}
}
ব্যাখ্যা:
SoftAssert.assertAll(): এটি টেস্ট কেস শেষে সব Assertion-এর রিপোর্ট প্রদর্শন করে।- Soft Assertions-এর জন্য টেস্ট এক্সিকিউশন বন্ধ হয় না, বরং সমস্ত Assertion-এর ফলাফল রিপোর্টে অন্তর্ভুক্ত হয়।
Hard এবং Soft Assertions-এর পার্থক্য
| বৈশিষ্ট্য | Hard Assertions | Soft Assertions |
|---|---|---|
| ব্যবহার | Assertion ব্যর্থ হলে টেস্ট বন্ধ হয়। | Assertion ব্যর্থ হলেও টেস্ট চালু থাকে। |
| ক্লাস | Assert | SoftAssert |
| পরিবেশ | Critical টেস্ট কেসের জন্য উপযুক্ত। | Non-critical টেস্ট কেসের জন্য উপযুক্ত। |
Assertions ব্যবহার করার সুবিধা
- টেস্ট ফলাফল সঠিক এবং নির্ভরযোগ্য হয়।
- প্রত্যাশিত ফলাফল এবং আসল ফলাফলের মধ্যে পার্থক্য চিহ্নিত করতে সাহায্য করে।
- টেস্ট স্ক্রিপ্ট আরও শক্তিশালী এবং নির্ভুল হয়।
সারাংশ
TestNG Assertions টেস্টিং প্রক্রিয়ার জন্য অত্যন্ত গুরুত্বপূর্ণ একটি ফিচার। Hard Assertions নিশ্চিত করে যে প্রত্যাশিত ফলাফল ঠিক থাকলে টেস্ট এক্সিকিউশন চলবে। অন্যদিকে, Soft Assertions ব্যর্থতা সত্ত্বেও বাকি ধাপগুলো সম্পন্ন করতে সাহায্য করে। টেস্টের ধরন এবং জটিলতা অনুযায়ী Hard অথবা Soft Assertions বেছে নেওয়া উচিত।
Assertion কি?
Assertion হলো টেস্টিং প্রক্রিয়ায় ব্যবহৃত একটি পদ্ধতি যা নিশ্চিত করে যে একটি কোডের আউটপুট প্রত্যাশিত ফলাফলের সঙ্গে মিলছে কিনা। এটি সাধারণত assert স্টেটমেন্ট বা টেস্টএনজি-তে প্রোভাইড করা Assertion মেথডের মাধ্যমে পরিচালিত হয়।
টেস্টএনজি-তে Assertions ব্যবহার করে নিশ্চিত করা যায় যে:
- টেস্ট কেস সঠিকভাবে কাজ করছে।
- আউটপুট প্রত্যাশিত ফলাফলের সাথে মেলে।
- ভুল আউটপুট পাওয়া গেলে টেস্ট ব্যর্থ (Fail) হয়।
টেস্টএনজি-তে Assertion-এর মূল ক্লাস
Assertions পরিচালনার জন্য টেস্টএনজি org.testng.Assert ক্লাস সরবরাহ করে, যা বিভিন্ন মেথডের মাধ্যমে টেস্টিং সহজ করে।
Assertion-এর প্রয়োজনীয়তা
টেস্ট ফলাফল যাচাই করা
Assertion ব্যবহার করে চেক করা যায় টেস্ট মেথড সঠিকভাবে কাজ করছে কিনা এবং প্রত্যাশিত আউটপুট প্রদান করছে কিনা।
অটোমেটেড টেস্টিং সহজ করা
Assertion দিয়ে কোডের প্রতিটি স্তরে ত্রুটি শনাক্ত করা সহজ হয়। এটি ম্যানুয়াল টেস্টিংয়ের প্রয়োজনীয়তা কমিয়ে দেয়।
ত্রুটির তাত্ক্ষণিক প্রতিবেদন
যদি টেস্ট কোনো শর্ত পূরণ না করে, Assertion সাথে সাথে টেস্ট ব্যর্থ হিসেবে চিহ্নিত করে, যা ত্রুটি দ্রুত শনাক্ত করতে সাহায্য করে।
টেস্টিং প্রক্রিয়ার নির্ভুলতা
এটি নিশ্চিত করে যে কোনো কোডের ভুল আউটপুট স্বাভাবিক কাজের ধারাকে বাধাগ্রস্ত করছে কিনা।
Assertion-এর উদাহরণ
সঠিক ফলাফল যাচাই (assertEquals)
import org.testng.Assert;
import org.testng.annotations.Test;
public class AssertionExample {
@Test
public void testAssertion() {
int actual = 5 + 5;
int expected = 10;
Assert.assertEquals(actual, expected, "Actual value does not match expected value!");
}
}
এখানে Assert.assertEquals ব্যবহার করে actual এবং expected মান যাচাই করা হয়েছে।
শর্ত যাচাই (assertTrue)
@Test
public void testCondition() {
boolean isAvailable = true;
Assert.assertTrue(isAvailable, "Condition is not true!");
}
শর্ত মিথ্যা হওয়া যাচাই (assertFalse)
@Test
public void testConditionFalse() {
boolean isComplete = false;
Assert.assertFalse(isComplete, "Condition is not false!");
}
Null চেক (assertNull)
@Test
public void testNullCheck() {
String value = null;
Assert.assertNull(value, "Value is not null!");
}
Not Null চেক (assertNotNull)
@Test
public void testNotNullCheck() {
String value = "TestNG";
Assert.assertNotNull(value, "Value is null!");
}
Assertion-এর প্রকারভেদ
হার্ড Assertion (Hard Assertion)
হার্ড Assertion কোনো টেস্ট ব্যর্থ হলে সাথে সাথেই টেস্ট মেথড থামিয়ে দেয়। এটি টেস্টএনজি-র ডিফল্ট Assertion।
সফট Assertion (Soft Assertion)
সফট Assertion টেস্ট মেথড চালিয়ে যেতে দেয়, এমনকি একটি Assertion ব্যর্থ হলেও। এটি SoftAssert ক্লাসের মাধ্যমে ব্যবহার করা হয়।
উদাহরণ:
import org.testng.asserts.SoftAssert;
@Test
public void testSoftAssert() {
SoftAssert softAssert = new SoftAssert();
softAssert.assertEquals(10, 5, "Values do not match!");
System.out.println("This line will execute even if assertion fails.");
softAssert.assertAll(); // Collects all failures and reports them
}
সারাংশ
Assertion টেস্টিং প্রক্রিয়ার অপরিহার্য অংশ, যা নিশ্চিত করে যে কোড প্রত্যাশিত ফলাফল প্রদান করছে। এটি টেস্টিংয়ের কার্যকারিতা বাড়িয়ে তুলতে, ত্রুটি দ্রুত শনাক্ত করতে এবং টেস্টিং প্রক্রিয়া আরও নির্ভুল করতে সহায়তা করে। টেস্টএনজি হার্ড এবং সফট Assertions এর মাধ্যমে টেস্টিং সহজ এবং কার্যকর করে।
Assert কিভাবে কাজ করে?
TestNG-এর Assert ক্লাস বিভিন্ন assertion মেথড সরবরাহ করে, যা টেস্ট কেসের প্রত্যাশিত এবং প্রকৃত ফলাফল যাচাই করতে ব্যবহৃত হয়। Assertion ব্যর্থ হলে টেস্ট কেস ব্যর্থ হয় এবং টেস্ট রিপোর্টে এটি দেখানো হয়।
assertEquals()
ব্যবহার:
এই মেথডটি দুটি মান (অপেক্ষিত এবং প্রকৃত) সমান কিনা তা যাচাই করতে ব্যবহৃত হয়।
সিনট্যাক্স:
Assert.assertEquals(actual, expected, message);
উদাহরণ:
@Test
public void testEquals() {
int actual = 5;
int expected = 5;
Assert.assertEquals(actual, expected, "Actual value does not match expected value.");
}
assertTrue()
ব্যবহার:
এই মেথডটি যাচাই করে যে প্রদত্ত শর্তটি true কিনা।
সিনট্যাক্স:
Assert.assertTrue(condition, message);
উদাহরণ:
@Test
public void testTrue() {
boolean condition = (10 > 5);
Assert.assertTrue(condition, "Condition is not true.");
}
assertFalse()
ব্যবহার:
এই মেথডটি যাচাই করে যে প্রদত্ত শর্তটি false কিনা।
সিনট্যাক্স:
Assert.assertFalse(condition, message);
উদাহরণ:
@Test
public void testFalse() {
boolean condition = (5 > 10);
Assert.assertFalse(condition, "Condition is not false.");
}
assertNull()
ব্যবহার:
এই মেথডটি যাচাই করে যে একটি অবজেক্ট null কিনা।
সিনট্যাক্স:
Assert.assertNull(object, message);
উদাহরণ:
@Test
public void testNull() {
String str = null;
Assert.assertNull(str, "Object is not null.");
}
assertNotNull()
ব্যবহার:
এই মেথডটি যাচাই করে যে একটি অবজেক্ট null নয়।
সিনট্যাক্স:
Assert.assertNotNull(object, message);
উদাহরণ:
@Test
public void testNotNull() {
String str = "Hello, TestNG!";
Assert.assertNotNull(str, "Object is null.");
}
উপসংহার
TestNG-এর assertion মেথডগুলো টেস্ট কেসের প্রত্যাশিত ফলাফল যাচাই করার জন্য অপরিহার্য। assertEquals(), assertTrue(), assertFalse(), assertNull(), এবং assertNotNull() যথাযথভাবে ব্যবহার করলে টেস্ট কেস আরও নির্ভরযোগ্য এবং কার্যকর হয়।
Assertion টেস্টিং প্রক্রিয়ার একটি গুরুত্বপূর্ণ অংশ, যা নিশ্চিত করে যে টেস্ট কেসের আউটপুট প্রত্যাশিত ফলাফলের সাথে মিলে। TestNG ফ্রেমওয়ার্কে Assertion ব্যবহার করে টেস্টের ভ্যালিডেশন করা হয়। যদি Assertion ব্যর্থ হয়, টেস্ট কেস ব্যর্থ (Failed) হিসেবে চিহ্নিত হয়।
TestNG Assertion কী?
Assertion হলো একটি স্টেটমেন্ট যা টেস্ট কেসে প্রত্যাশিত এবং প্রকৃত ফলাফলের মধ্যে তুলনা করে। TestNG ফ্রেমওয়ার্কে Assertions ক্লাস ব্যবহার করা হয়। এর প্রধান দুটি ধরণ হলো:
- Hard Assertions: যেখানে Assertion ব্যর্থ হলে টেস্ট কেস সঙ্গে সঙ্গেই থেমে যায়।
- Soft Assertions: যেখানে Assertion ব্যর্থ হলেও পরবর্তী লাইনগুলো চালানো যায়। এটি
SoftAssertক্লাস ব্যবহার করে করা হয়।
TestNG-তে Assertion এর উদাহরণ
Hard Assertion উদাহরণ
import org.testng.Assert;
import org.testng.annotations.Test;
public class HardAssertionExample {
@Test
public void testEquality() {
int expected = 10;
int actual = 10;
// Hard Assertion
Assert.assertEquals(actual, expected, "Actual value does not match expected value!");
}
@Test
public void testCondition() {
boolean condition = true;
// Hard Assertion
Assert.assertTrue(condition, "Condition is not true!");
}
}
বর্ণনা:
Assert.assertEquals(actual, expected)প্রকৃত এবং প্রত্যাশিত মান তুলনা করে।Assert.assertTrue(condition)চেক করে শর্তটি সত্য কিনা।
Soft Assertion উদাহরণ
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;
public class SoftAssertionExample {
@Test
public void testMultipleAssertions() {
SoftAssert softAssert = new SoftAssert();
System.out.println("Assertion 1");
softAssert.assertEquals(5, 10, "First assertion failed!");
System.out.println("Assertion 2");
softAssert.assertTrue(false, "Second assertion failed!");
System.out.println("End of test");
// Assert all to report all failures
softAssert.assertAll();
}
}
বর্ণনা:
SoftAssertব্যবহার করলে Assertion ব্যর্থ হলেও পরবর্তী লাইনগুলো এক্সিকিউট হয়।softAssert.assertAll()সমস্ত Assertion ফলাফল রিপোর্ট করে। এটি বাধ্যতামূলক।
TestNG Assertion মেথডসমূহ
Commonly Used Assertion Methods:
| মেথড | বর্ণনা |
|---|---|
Assert.assertEquals(a, b) | a এবং b সমান কিনা যাচাই করে। |
Assert.assertNotEquals(a, b) | a এবং b সমান নয় কিনা যাচাই করে। |
Assert.assertTrue(condition) | condition সত্য কিনা যাচাই করে। |
Assert.assertFalse(condition) | condition মিথ্যা কিনা যাচাই করে। |
Assert.assertNull(object) | object null কিনা যাচাই করে। |
Assert.assertNotNull(object) | object null নয় কিনা যাচাই করে। |
Hard Assertion বনাম Soft Assertion এর পার্থক্য
| বৈশিষ্ট্য | Hard Assertion | Soft Assertion |
|---|---|---|
| ব্যর্থতার পর টেস্ট | Assertion ব্যর্থ হলে টেস্ট কেস থেমে যায়। | Assertion ব্যর্থ হলেও টেস্ট চালু থাকে। |
| প্রয়োগ পদ্ধতি | Assert ক্লাস ব্যবহার করা হয়। | SoftAssert ক্লাস ব্যবহার করা হয়। |
| ফলাফল রিপোর্ট | সাথে সাথেই ব্যর্থতার ফলাফল রিপোর্ট করে। | সব Assertion শেষ হওয়ার পর ফলাফল রিপোর্ট করে। |
উদাহরণ: Assertion সহ একটি বাস্তব টেস্ট
import org.testng.Assert;
import org.testng.annotations.Test;
public class LoginTest {
@Test
public void validateLogin() {
String expectedTitle = "Dashboard - MyApp";
String actualTitle = "Dashboard - MyApp";
boolean isUserLoggedIn = true;
// Validate page title
Assert.assertEquals(actualTitle, expectedTitle, "Page title does not match!");
// Validate user login status
Assert.assertTrue(isUserLoggedIn, "User is not logged in!");
System.out.println("Login test passed!");
}
}
বর্ণনা:
- এখানে পেজের টাইটেল এবং ইউজারের লগইন স্ট্যাটাস যাচাই করা হয়েছে।
- Assertion ব্যর্থ হলে টেস্ট কেস ব্যর্থ হিসেবে চিহ্নিত হবে এবং এর জন্য নির্দিষ্ট বার্তা প্রদর্শিত হবে।
সারাংশ
TestNG-তে Assertion ব্যবহার টেস্ট কেসের গুণগত মান বাড়ায় এবং ভুল চিহ্নিতকরণ সহজ করে। Hard Assertion ছোট টেস্টের জন্য উপযুক্ত, যেখানে Soft Assertion জটিল এবং মাল্টি-স্টেপ টেস্ট কেসের জন্য কার্যকর। Assertion এর সঠিক ব্যবহার টেস্টিং প্রক্রিয়াকে আরও কার্যকরী এবং নির্ভুল করে তোলে।
Read more